Subject: Re: Aux-Handler
From: [email-masked] ("Randell Jesup")
Date: Fri, 27 May 1994 21:54:32 GMT
Newsgroups: comp.sys.amiga.programmer

[email-masked] (Jeff Dickson) wrote:
>>What do I have to do to ensure that my aux-handler (based on sd-aux)
>>after mounted is not mistakenly interpreted as having a filesystem by some
>>system-monitor-tools? Maybe the mountlist entry is the problem?
>>
>>Handler = L:KMSAUX-Handler
>>Startup = DEVICE:serial.device/UNIT:0/SPEED:19200
>>StackSize = 4000
>>Priority =  5
>>GlobVec = -1
>>
>>Or what has to be done in the handler code to tell everybody the absence of a
>>file system under it?

>	When handlers are begun (at least the one's that I have written) the
>OS requests a lock on what could be thought of as the root of the volume for
>filesystems. For non filesystem type handlers I would disallow any locks from
>being issued thereafter (ACTION_LOCATE_OBJECT). I still allowed that one lock
>to be duplicated though (ACTION_COPY_DIR). Also I would answer false to the
>ACTION_IS_FILE_SYSTEM dos packet.

	Actually, the "standard" test (other than the direct query with
ACTION_IS_FILE_SYSTEM) is to see if the handler supports ACTION_LOCATE_OBJECT.
If you are a handler, and not a filesystem, you should not support
ACTION_LOCATE_OBJECT at all.

	Check out the port-handler example from the Atlanta(?) devcon disks.
(You'll want to add support for ACTION_IS_FILESYSTEM - return FALSE.)

-- 
Randell Jesup, Scala US R&D
[email-masked]
Ex-Commodore-Amiga Engineer, class of '94
#include <std/disclaimer>

From: [email-masked] (Steve Dunham)
Subject: Re: Tagcalls in a .library
Date: 31 May 1994 19:02:04 GMT

Ketil Hunn ([email-masked]) wrote:
: How do I create tagcalls in a .library since varargs cannot be put in registers?

: ex:
: funcA(struct TagItem *taglist)

: func(Tag tag1,...)
: (
:  return funcA((struct TagItem *)&tag1);
: )

: In other words, how do I put function func in the library?

You can't.  But SAS has a special #pragma statement that will
automatically take care of everything. Just put funcA in your library
and if the pragma statement for funcA looks like this:

#pragma libcall funcA 1e 8

Then you add the following line after it

#pragma tagcall func 1e 8

(this is all in the Library Reference manual)

Later,
Steve
[email-masked]